import axios from 'axios'
import { Message } from 'element-ui'
var Rxports = {

    /**
     * 封装axios，减少学习成本，参数基本跟jq ajax一致
     * @param {String} type			请求的类型，默认post
     * @param {String} url				请求地址
     * @param {String} time			超时时间
     * @param {Object} data			请求参数
     * @param {String} dataType		预期服务器返回的数据类型，xml html json ...
     * @param {Object} headers			自定义请求headers
     * @param {Function} success		请求成功后，这里会有两个参数,服务器返回数据，返回状态，[data, res]
     * @param {Function} error		发送请求前
     * @param return 
     */
    ajax: function(opt) {
        var that = this
        var opts = opt || {};
        if (!opts.url) {
            alert('请填写接口地址');
            return false;
        }
        axios({
            method: opts.type || 'POST',
            url: opts.url,
            params: opts.data || {},
            header: opts.header || {
                'Content-Type': 'application/x-www-form-urlencoded;charset=utf-8'
            },
            // `baseURL` 将自动加在 `url` 前面，除非 `url` 是一个绝对 URL。
            baseURL: eduAPI.activeAPI.homeUrl,
            timeout: opts.time || 20000,
            responseType: opts.dataType || 'json'
        }).then(function(res) {
            if (res.status == 200) {
                // debugger
                if (res.data.code == 0 || res.data.code == 999) {
                    if (opts.success) {
                        opts.success(res.data, res);
                    }
                } else if (res.data.code == -1 || res.data.code == 1001) {
                    if (opts.warning) {
                        opts.warning(res.data, res);
                    } else {
                        Message({
                            showClose: true,
                            message: res.data.msg,
                            type: 'warning'
                        });
                    }
                } else {
                    if (opts.error) {
                        opts.error(res.data, res);
                    } else {
                        if (res.data.code == -1 || res.data.code == 1002 || res.data.code == 1003) {
                            Message({
                                showClose: true,
                                message: res.data.msg,
                                type: 'error'
                            });
                        }
                    }
                }
            } else {
                if (data.error) {
                    opts.error(error);
                } else {
                    Message({
                        showClose: true,
                        message: '连接超时，请联系客服',
                        type: 'error'
                    });
                    return false
                }
            }
        }).catch(function(error) {
            Message({
                showClose: true,
                message: '连接超时，请联系客服',
                type: 'error'
            });
            return false
        });

    },
    //时间戳转换
    formatTime: function(date) {
        var date = new Date(date);
        var year = date.getFullYear()
        var month = date.getMonth() + 1
        var day = date.getDate()

        var hour = date.getHours()
        var minute = date.getMinutes()
        var second = date.getSeconds()


        return [year, month, day].map(this.formatNumber).join('-') + ' ' + [hour, minute, second].map(this.formatNumber).join(':')
    },


    //数字加0转换
    formatNumber: function(n) {
        n = n.toString()
        return n[1] ? n : '0' + n
    },


    /**
     * 深复制
     * @param src
     * @returns {{}}
     */
    copy(obj) {

        var dst = obj.constructor === Array ? [] : {};
        for (var prop in obj) {
            if (obj.hasOwnProperty(prop)) {
                if (typeof obj[prop] == 'object') {
                    dst[prop] = this.copy(obj[prop])
                } else {
                    dst[prop] = obj[prop];
                }
            }
        }
        return dst;
    },


};

export default Rxports;